package com.itheima.d3_abstract;

/*
抽象类：被abstract关键字修饰的类
抽象方法：被abstract关键字修饰的方法就是叫做抽象方法。

一个抽象类中可以没有抽象方法，但有抽象方法的类，必定是抽象类。

抽象类，抽象方法怎么用？
1、抽象类不能直接创建对象使用，
2、需要写个子类去继承抽象类，并且重写所有的抽象方法 否则子类也要变成抽象类。

 */
public abstract class Animal {
    private String name;

    public Animal() {
    }

    public Animal(String name) {
        this.name = name;
    }

    //抽象方法
    public abstract void eat();

    public abstract void sleep();

    public abstract void cry();

    public void play() {
        System.out.println("动物在玩耍！！");
    }
}


class Cat extends Animal {

    @Override
    public void eat() {
        System.out.println("猫儿在吃鱼");
    }

    @Override
    public void sleep() {
        System.out.println("猫在睡觉");
    }

    @Override
    public void cry() {
        System.out.println("猫猫在喵喵喵的叫！！");
    }
}

class Dog extends Animal {

    @Override
    public void eat() {
        System.out.println("狗在吃肉骨头");
    }

    @Override
    public void sleep() {
        System.out.println("狗狗在睡觉觉！");
    }

    @Override
    public void cry() {
        System.out.println("狗狗在汪汪叫！");
    }
}